1. Technical Field
The present invention relates to image processing, and more particularly, to a system and method for rendering a binary volume in a graphics processing unit.
2. Discussion of the Related Art
A graphics processing unit (GPU) is typically identified as the microprocessor of a graphics card for a personal computer or game console. Modern GPUs are very efficient at manipulating and displaying computer graphics and their highly-parallel structure makes them more effective than central processing units (CPUs) for a range of complex algorithms. For example, modern GPUs have all but taken over operations once performed by CPUs such as texture mapping and rendering of polygons and geometric calculations such as the mapping of vertexes into different coordinate systems.
As computer workstations with GPUs supporting the interactive rendering of complex three-dimensional (3D) polygon scenes consisting of directly lit and shaded triangles became widely available, techniques for texture-based rendering of grayscale volumetric datasets were developed. Building upon these techniques, volume rendering methods using binary masks began to appear. These methods, however, encountered difficulties in attempting to distinguish between different types of material based solely on grayscale values that were measured during the acquisition of volumetric data. To remedy this, binary segmentation masks were employed to mark wanted and unwanted parts of the volumetric data.
When a binary volume is in its native form as a binary segmentation mask, flags for eight neighboring voxels along an x-axis are stored in a single byte. Such binary volumes cannot be easily stored and rendered using GPUs. This occurs since neither boolean operations for fragment processing nor texture formats for binary data are utilzed by modern GPUs. Because of this, binary volumes are often expanded by assigning a byte value to each bit of the original volume. The volumes are then stored in GPU memory. This, however, results in increasing the storage requirements of a GPU memory by a factor of, for example, 8, 16 or 32, which is neither desirable nor practical especially when dealing with large volumes.
One technique for reducing the memory requirements of a GPU involves “burning” a binary segmentation mask into a gray volume by setting data corresponding to the binary segmentation mask to a specified value. This technique, however, leads to a loss of information in the gray volume since burned-in data values are not distinguishable from original data values of the gray volume. In addition, this technique can lead to undesirable artifacts in rendered images when using, for example, post-interpolative transfer functions. As such, there is a need for a technique of reducing the amount of memory used by a GPU when rendering a binary volume.